package javase2.day07.demo02;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/*
线程池：JDK1.5后提供
    创建线程池的步骤：
        1.使用线程池工厂类Executors里边的方法newFixedThreadPool生产一个指定线程数量的线程池
        2.创建一个类实现Runnable接口,重写run方法，设置线程任务
        3.调用Executors中的方法submit，传递线程任务（实现类），开启线程，执行方法
        4.调用Executors中的方法shutdown销毁线程（不建议执行）
 */
public class Demo01ThreadPool {
    public static void main(String[] args) {
        // 1.使用线程池工厂类Executors里边的方法newFixedThreadPool生产一个指定线程数量的线程池
        ExecutorService es = Executors.newFixedThreadPool(2);
        // 3.调用Executors中的方法submit，传递线程任务（实现类），开启线程，执行方法
        es.submit(new RunnableImpl());//pool-1-thread-1创建了一个新线程执行
        //线程池会一直开启，使用完了线程，自动归还，仍可继续使用
        es.submit(new RunnableImpl());//pool-1-thread-1创建了一个新线程执行
        es.submit(new RunnableImpl());//pool-1-thread-2创建了一个新线程执行

        //4.调用Executors中的方法shutdown销毁线程（不建议执行）
        es.shutdown();
        es.submit(new RunnableImpl());//java.util.concurrent.RejectedExecutionException抛异常线程池没有了

    }
}
